package com.shuiyun.jtt.entity.form;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.shuiyun.jtt.utils.codec.DataType;
import com.shuiyun.jtt.utils.codec.FieldValue;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * @author shuiyun
 * @program gateway
 * @description 行驶记录数据采集命令
 * @date 2022-05-15 21:59
 **/
@EqualsAndHashCode(callSuper = true)
@Data
public class T8700Form extends BaseForm{

    /**
     * 采集记录仪执行标准版本(00H)
     * 采集当前驾驶人信息(01H)
     * 采集记录仪的实时时间 (02H)
     * 采集累计行驶里程(03H)
     * 采集记录仪脉冲系数(04H)
     * 采集车辆信息(05H)
     * 采集记录仪状态信号配置信息(06H)
     * 采集记录仪唯一性编号 (07H)
     * 采集指定的行驶速度记录(08H)
     * 采集指定的位置信息记录(09H)
     * 采集指定的事故疑点记录(10H)
     * 采集指定的超时驾驶记录(11H)
     * 采集指定的驾驶人身份记录(12H)
     * 采集指定的记录仪外部供电记录(13H)
     * 采集指定的记录仪参数修改记录(14H)
     * 采集指定的速度状态日志(15H)
     */
    @ApiModelProperty(value = "命令字",example = "1",notes = "采集记录仪执行标准版本(00H)\n 采集当前驾驶人信息(01H)\n采集记录仪的实时时间 (02H)\n采集累计行驶里程(03H)\n采集记录仪脉冲系数(04H)\n采集车辆信息(05H)\n采集记录仪状态信号配置信息(06H)\n 采集记录仪唯一性编号 (07H)\n采集指定的行驶速度记录(08H)\n 采集指定的位置信息记录(09H)\n 采集指定的事故疑点记录(10H)\n 采集指定的超时驾驶记录(11H)\n 采集指定的驾驶人身份记录(12H)\n采集指定的记录仪外部供电记录(13H)\n 采集指定的记录仪参数修改记录(14H)\n 采集指定的速度状态日志(15H)\n ")
    private Integer command;

    @ApiModelProperty(value = "开始时间",example = "2022-05-14 00:00:00",notes = "yyyy-MM-dd HH:mm:ss 命令08H~15H需要该字段")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @NotNull(message = "开始时间不能为空")
    @FieldValue(type = DataType.BCD,desc = "开始时间")
    private Date startTime;

    @ApiModelProperty(value = "开始时间",example = "2022-05-15 00:00:00",notes = "yyyy-MM-dd HH:mm:ss 命令08H~15H需要该字段")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @NotNull(message = "结束时间不能为空")
    @FieldValue(type = DataType.BCD,desc = "结束时间")
    private Date endTime;

    @ApiModelProperty(value = "最大单位数据块个数 命令08H~15H需要该字段")
    @NotNull(message = "最大单位数据块个数不能为空")
    @FieldValue(type = DataType.WORD,desc = "最大单位数据块个数")
    private Integer count;
}
